package java.classe;

public class Classe extends ClasseEntidade {
	public Classe(String nomeDaClasse) {
		super(nomeDaClasse);
	}

	public String codigoFonte() {
		String modificador = super.modificador == null ? NONVALUE
				: super.modificador + ESPACO;
		String abstrato = super.abstrata ? ABSTRACT + ESPACO : NONVALUE;
		String fim = super.fim ? FINAL + ESPACO : NONVALUE;
		String extende = super.extende == null ? NONVALUE : ESPACO + HERANCA
				+ ESPACO + super.extende.getNome();
		String implementa = super.qualidades == null ? NONVALUE : ESPACO
				+ IMPLEMENTACAO + ESPACO + qualidades.codigoFonte();

		return pacote() + recursos() + modificador + fim + abstrato + CLASS
				+ ESPACO + nome + extende + implementa + INICIOBLOCO
				+atributos()+ construtor() + metodos() + classes() + FIMBLOCO;
	}

	private String atributos() {
		return atributos == null ? NONVALUE : atributos.codigoFonte();
	}

	private String classes() {
		return classes == null ? NONVALUE : classes.codigoFonte();
	}

	private String metodos() {
		return metodos == null ? NONVALUE : metodos.codigoFonte();
	}

	private String construtor() {
		return super.construtores == null ? NONVALUE : super.construtores
				.codigoFonte();
	}

	private String recursos() {
		return super.recursos == null ? NONVALUE : super.recursos.codigoFonte();
	}

	private String pacote() {
		return super.pacote == null ? NONVALUE : super.pacote.codigoFonte()
				+ FIMCOMANDO;
	}

}
